package com.daxia.ogmall.web.controller;

import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.daxia.ogmall.common.HardcoverStyleType;
import com.daxia.ogmall.common.Logs;
import com.daxia.ogmall.common.RecommonStatus;
import com.daxia.ogmall.dto.BrandDTO;
import com.daxia.ogmall.dto.BrandStyleDTO;
import com.daxia.ogmall.dto.DesignProductDTO;
import com.daxia.ogmall.dto.HardcoverQueryDTO;
import com.daxia.ogmall.dto.ProductDTO;
import com.daxia.ogmall.model.Brand;
import com.daxia.ogmall.model.ProductCategory;
import com.daxia.ogmall.support.Page;

@Controller
@RequestMapping("hardcover")
public class HardcoverController extends BaseController {
	
	

	@RequestMapping("/index")
	public String index(BrandStyleDTO brandStyleDTO, Page page, Map<String, Object> map) {
		if (1 == 1) {
			return "redirect:/staybag/index";
		}
		brandStyleDTO.setRecommon(RecommonStatus.Recommened.getValue());
		List<BrandStyleDTO> brandStyleDTOs = brandStyleService.find(brandStyleDTO, page);
		
		
		map.put("brandStyleDTOs", brandStyleDTOs);
		Logs.COMMON.debug(brandStyleDTOs.size());
    	map.put("page", page);
    	map.put("brandStyleDTO", brandStyleDTO);
    	
    	map.put("hsts", HardcoverStyleType.toMap());
    	
    	
    	/**
    	 * 产品类目图片，此处先说明，页面上要进行对应的图片切换，图片包括：产品图片+各类类目图片，根据
    	 * 类目切换来显示不同类目的对应图片，产品的图片还是不变
    	 */
    	map.put("categories", productCategoryService.findAllRoot());

		return "hardcover/hardcover_index";
	}
	
	@RequestMapping("/detail")
	public String detail(Long brandID, Long styleID, Integer sortType, HardcoverQueryDTO query, Page page, Integer pageNum, Map<String, Object> map) {
		BrandDTO brandDTO = brandService.load(brandID);
		
		ProductDTO productQuery = new ProductDTO();
		Brand brandQuery = new Brand();
		brandQuery.setId(brandDTO.getId());
		productQuery.setBrand(brandQuery);
		productQuery.setSortType(sortType);
		if (query.getCategoryID() != null) {
			ProductCategory productCategory = new ProductCategory();
			productCategory.setId(query.getCategoryID());
			productQuery.setProductCategory(productCategory );
		}
		
		ProductDTO productQuery2 = new ProductDTO();
		productQuery2.setBrand(brandQuery);
		
		Page page2 = new Page();
		if (pageNum == null) {
			pageNum = 1;
		}
		page2.setPage(pageNum);
		
		Set<ProductCategory> productCategorys = new HashSet<ProductCategory>();
		List<ProductDTO> productDTOs = productService.find(productQuery, page2);
		List<ProductDTO> productCategoryDTOs = productService.find(productQuery2, null);

		for (ProductDTO productDTO : productCategoryDTOs) {
			ProductCategory productCategory = productDTO.getProductCategory();
			productCategorys.add(productCategory);
		}
		
		DesignProductDTO desiginProductQuery = new DesignProductDTO();
		List<DesignProductDTO> designProductDTOs = designProductService.find(desiginProductQuery , null);
		Set<Long> designIDs = new HashSet<Long>();
		for (DesignProductDTO designProductDTO : designProductDTOs) {
			designIDs.add(designProductDTO.getDesign().getId());
		}
		page.setTotalRecords(designIDs.size());
		
		
		
		map.put("productCategorys", productCategorys);
		map.put("brandDTO", brandDTO);
		map.put("productDTOs", productDTOs);
		map.put("totalProduct", page2.getTotalRecords());
		map.put("totalDesign", page.getTotalRecords());
		map.put("brandID", brandID);
		map.put("styleID", styleID);
		map.put("designProductDTOs", designProductDTOs);
    	map.put("page", page);
    	map.put("totalDesignProduct", designProductDTOs.size());
    
    	map.put("page2", page2);
    	map.put("query", query);
    	map.put("sortType", sortType);
    	
    	

		/**
    	 * 产品类目图片，此处先说明，页面上要进行对应的图片切换，图片包括：产品图片+各类类目图片，根据
    	 * 类目切换来显示不同类目的对应图片，产品的图片还是不变
    	 */
    	map.put("categories", productCategoryService.findAllRoot());
		return "hardcover/hardcover_detail";
	}
}
